import os
import yaml

class ConfigManager:
    """
    配置管理类，负责加载和访问配置
    """
    def __init__(self, config_path=None):
        """
        初始化配置管理器
        :param config_path: 配置文件路径，如果为None则使用默认路径
        """
        self.config = {}
        if config_path is None:
            self.config_path = os.path.join(os.getcwd(), 'config/config.yml')
        else:
            self.config_path = config_path
        
        self.load_config()
    
    def load_config(self):
        """
        从文件加载配置
        """
        if not os.path.exists(self.config_path):
            return
            
        with open(self.config_path, 'r', encoding='utf-8') as file:
            self.config = yaml.safe_load(file) or {}
    
    def get(self, key_path, default=None):
        """
        根据键路径获取配置值
        :param key_path: 键路径，格式如 'api.google.api_key'
        :param default: 如果键不存在，返回的默认值
        :return: 配置值或默认值
        """
        parts = key_path.split('.')
        data = self.config
        
        for part in parts:
            if isinstance(data, dict) and part in data:
                data = data[part]
            else:
                # 尝试从环境变量获取
                env_var = key_path.upper().replace('.', '_')
                env_value = os.environ.get(env_var)
                if env_value:
                    return env_value
                return default
        
        return data
    
    def get_secret_key(self):
        """
        获取密钥，优先从配置文件读取，再从环境变量
        :return: 密钥字符串
        """
        return self.get('app.secret_key', 'default_secret_key')
    
    def get_session_timeout(self):
        """
        获取会话超时时间（秒）
        :return: 超时秒数
        """
        return int(self.get('app.session_timeout', 3600))
    
    def get_api_config(self, api_name):
        """
        获取API配置
        :param api_name: API名称，如 'google', 'gemini'
        :return: API配置字典
        """
        return self.get(f'api.{api_name}', {})

# 创建配置管理器实例
config_manager = ConfigManager() 